.lib "bo3d.dll"

;====================================================================
; Root
;====================================================================
o_newRoot%(plugins%, config%, logfile%, manual%):"_o_newRoot@16"
o_restoreConfig%(ogre_root%):"_o_restoreConfig@4"
o_showConfigDialog%(ogre_root%):"_o_showConfigDialog@4"
o_initialise%(ogre_root%, autoCreateWindow%, windowTitle$, customCababilities$):"_o_initialise@16"
o_freeRoot(ogre_root%):"_o_freeRoot@4"
o_saveConfig(ogre_root%):"_o_saveConfig@4"
o_getRenderSystemByName%(ogre_root%, rendersystem_name$):"_o_getRenderSystemByName@8"
o_setRenderSystem(ogre_root%, rs%):"_o_setRenderSystem@8"
o_getRenderSystem%(ogre_root%):"_o_getRenderSystem@4"
o_createRenderWindow%(ogre_root%, name$, width%, Height%, fullscreen%, miscParams$):"_o_createRenderWindow@24"
o_createSceneManager%(ogre_root%, typeMask%, instanceName$):"_o_createSceneManager@12"
o_renderOneFrame%(ogre_root%, timeSinceLastFrame#):"_o_renderOneFrame@8"
o_loadPlugin(ogre_root%, plugin$):"_o_loadPlugin@8"
o_addFrameListener(ogre_root%, listener%):"_o_addFrameListener@8"

;====================================================================
; rendersystem
;====================================================================
o_setConfigOption(rs%, cname$, cvalue$):"_o_setConfigOption@12"

;====================================================================
; scenemanager
;====================================================================
o_createCamera%(scenemanager%, name$):"_o_createCamera@8"
o_createEntity%(scenemanager%, entityName$, meshName$, groupName$):"_o_createEntity@16"
o_getRootSceneNode%(scenemanager%):"_o_getRootSceneNode@4"
o_createLight%(scm%):"_o_createLight@4"
o_setAmbientLight(scm%, col*):"_o_setAmbientLight@8"
o_destroyCamera(scm%, cam%):"_o_destroyCamera@8"
o_destroyAllCameras(scm%):"_o_destroyAllCameras@4"
o_destroyLight(scm%, l%):"_o_destroyLight@8"
o_destroyAllLights(scm%):"_o_destroyAllLights@4"
o_destroySceneNode(scm%, node%):"_o_destroySceneNode@8"
o_destroyEntity(scm%, entity%):"_o_destroyEntity@8"
o_destroyAllEntities(scm%):"_o_destroyAllEntities@4"
o_setShadowTechnique(scm%, technique%):"_o_setShadowTechnique@8"
o_setShadowTextureSize(scm%, texsize%):"_o_setShadowTextureSize@8"
o_setShadowUseLightClipPlanes(scm%, enable%):"_o_setShadowUseLightClipPlanes@8"
o_sm_setShadowFarDistance(scm%, distance#):"_o_sm_setShadowFarDistance@8"
o_setSkyBox(scm%, enable%, materialName$, distance#, drawFirst%, orientation%, groupName$):"_o_setSkyBox@28"
o_createRayQuery%(scm%, r%, mask%):"_o_createRayQuery@12"
o_destroyQuery(scm%, rsq%):"_o_destroyQuery@8"

;====================================================================
; renderwindow
;====================================================================
o_addViewPort%(win%, camera%, zOrder%, x#, y#, width#, Height#):"_o_addViewPort@28"
o_getAverageFPS#(win%):"_o_getAverageFPS@4"
o_getBestFPS#(win%):"_o_getBestFPS@4"
o_getBestFrameTime#(win%):"_o_getBestFrameTime@4"
o_getLastFPS#(win%):"_o_getLastFPS@4"
o_getWorstFPS#(win%):"_o_getWorstFPS@4"
o_getWorstFrameTime#(win%):"_o_getWorstFrameTime@4"
	
;====================================================================
; viewport
;====================================================================
o_setBackgroundColour(viewport%, r#, g#, b#, a#):"_o_setBackgroundColour@20"
o_getActualWidth%(viewport%):"_o_getActualWidth@4"
o_getActualHeight%(viewport%):"_o_getActualHeight@4"
o_setCamera(viewport%, camera%):"_o_setCamera@8"

;====================================================================
; resourcegroupmanager
;====================================================================
o_addResourceLocation(dir$, locType$, resGroup$, recursive%):"_o_addResourceLocation@16"
o_createResourceGroup(name$, inGlobalPool%):"_o_createResourceGroup@8"
o_initialiseResourceGroup(resourceGroup$):"_o_initialiseResourceGroup@4"

;====================================================================
; camera
;====================================================================
o_camera_setPosition(cam%, x#, y#, z#):"_o_camera_setPosition@16"
o_setAspectRatio(cam%, ratio#):"_o_setAspectRatio@8"
o_camera_moveRelative(cam%, vec3*):"_o_camera_moveRelative@8"
o_setNearClipDistance(cam%, nearClipDistance#):"_o_setNearClipDistance@8"
o_setFarClipDistance(cam%, farClipDistance#):"_o_setFarClipDistance@8"
o_camera_pitch(cam%, pitch#):"_o_camera_pitch@8"
o_camera_yaw(cam%, yaw#):"_o_camera_yaw@8"
o_camera_roll(cam%, roll#):"_o_camera_roll@8"
o_camera_getPosition%(cam%):"_o_camera_getPosition@4"
o_camera_getViewPort%(cam%):"_o_camera_getViewPort@4"

;====================================================================
; scenenode
;====================================================================
bb_createChildSceneNode%(scenenode%, entityName$):"_bb_createChildSceneNode@8"
o_createChildSceneNode%(scenenode%, entityName$, translate%, rotate%)
o_attachObject(scenenode%, obj%):"_o_attachObject@8"
o_getName$(obj%):"_o_getName@4"
o_getType$(obj%):"_o_getType@4"
o_scenenode_pitch(node%, angle#, relativeTo%):"_o_scenenode_pitch@12"
o_scenenode_yaw(node%, angle#, relativeTo%):"_o_scenenode_yaw@12"
o_scenenode_roll(node%, angle#, relativeTo%):"_o_scenenode_roll@12"
o_scenenode_translate(node%, x#, y#, z#, relativeTo%):"_o_scenenode_translate@20"
o_scenenode_setposition(node%, x#, y#, z#):"_o_scenenode_setposition@16"
o_scenenode_getposition%(node%):"_o_scenenode_getposition@4"
o_scenenode_setOrientation(node%, orientation*):"_o_scenenode_setOrientation@8"

;====================================================================
; entity functions
;====================================================================
o_entity_getParentSceneNode%(ent%):"_o_entity_getParentSceneNode@4"
o_entity_setCastShadows(ent%, enable%):"_o_entity_setCastShadows@8"
o_clone%(ent%, newName$):"_o_clone@8"
o_entity_setMaterialName(ent%, matName$, resGroup$):"_o_entity_setMaterialName@12"
o_entity_setMaterial(ent%, mat%):"_o_entity_setMaterial@8"
o_entity_getMaterial%(ent%, subEntity%):"_o_entity_getMaterial@8"
o_entity_getMesh%(ent%):"_o_entity_getMesh@4"

;====================================================================
; light functions
;====================================================================
o_light_setType(l%, lightType%):"_o_light_setType@8"
o_light_setPosition(l%, x#, y#, z#):"_o_light_setPosition@16"
o_light_setDiffuseColour(l%, r#, g#, b#):"_o_light_setDiffuseColour@16"
o_light_setSpecularColour(l%, r#, g#, b#):"_o_light_setSpecularColour@16"
o_light_getDiffuseColour%(l%):"_o_light_getDiffuseColour@4"
o_light_getSpecularColour%(l%):"_o_light_getSpecularColour@4"
o_light_setAttenuation(l%, rng#, constant#, linear#, quadratic#):"_o_light_setAttenuation@20"
o_light_getAttenuationRange#(l%):"_o_light_getAttenuationRange@4"
o_light_getAttenuationConstant#(l%):"_o_light_getAttenuationConstant@4"
o_light_getAttenuationLinear#(l%):"_o_light_getAttenuationLinear@4"
o_light_getAttenuationQuadric#(l%):"_o_light_getAttenuationQuadric@4"
o_light_getPosition%(l%):"_o_light_getPosition@4"
o_light_setDirection(l%, x#, y#, z#):"_o_light_setDirection@16"
o_setSpotlightRange(l%, innerAngle#, outerAngle#, falloff#):"_o_setSpotlightRange@16"
o_setSpotlightInnerAngle(l%, angle#):"_o_setSpotlightInnerAngle@8"
o_setSpotlightOuterAngle(l%, angle#):"_o_setSpotlightOuterAngle@8"
o_setSpotlightFalloff(l%, falloff#):"_o_setSpotlightFalloff@8"
o_getSpotlightInnerAngle#(l%):"_o_getSpotlightInnerAngle@4"
o_getSpotlightOuterAngle#(l%):"_o_getSpotlightOuterAngle@4"
o_getSpotlightFalloff#(l%):"_o_getSpotlightFalloff@4"
o_light_getDirection%(l%):"_o_light_getDirection@4"
o_light_setPowerScale(l%, power#):"_o_light_setPowerScale@4"
o_light_getPowerScale#(l%):"_o_light_getPowerScale@4"
o_light_getMovableType$(l%):"_o_light_getMovableType@4"
o_light_setVisible(l%, visible%):"_o_light_setVisible@8"
o_light_setShadowFarDistance(l%, distance#):"_o_light_setShadowFarDistance@8"
o_light_setShadowFarClipDistance(l%, farClip#):"_o_light_setShadowFarClipDistance@8"
o_light_resetShadowFarDistance(l%):"_o_light_resetShadowFarDistance@4"
o_light_getShadowFarDistance#(l%):"_o_light_getShadowFarDistance@4"
o_light_setShadowNearClipDistance(l%, nearClip#):"_o_light_setShadowNearClipDistance@8"
o_light_getShadowNearClipDistance#(l%):"_o_light_getShadowNearClipDistance@4"
o_light_getShadowFarClipDistance#(l%):"_o_light_getShadowFarClipDistance@4"
o_light_getName$(l%):"_o_light_getName@4"
o_light_getParentNode%(l%):"_o_light_getParentNode@4"
o_light_getParentSceneNode%(l%):"_o_light_getParentSceneNode@4"
o_light_setCastShadows(l%, enable%):"_o_light_setCastShadows@8"

;====================================================================
; LogManager
;====================================================================
o_logMessage(message$, logMessageLevel%, maskDebug%):"_o_logMessage@12"

;====================================================================
; MaterialManager
;====================================================================
o_material_Create%(matName$, group$, isManual%, loader%, createParams$):"_o_material_Create@20"
o_material_getByName%(matName$):"_o_material_getByName@4"

;====================================================================
; Material
;====================================================================
o_material_clone%(mat%, newName$, changeGroup%, newGroup$):"_o_material_clone@16"
o_material_setDiffuse(mat%, r#, g#, b#, a#):"_o_material_setDiffuse@20"
o_material_setShininess(mat%, shininess#):"_o_material_setShininess@8"
o_material_setAmbient(mat%, r#, g#, b#):"_o_material_setAmbient@16"
o_material_setSpecular(mat%, r#, g#, b#, a#):"_o_material_setSpecular@20"
o_material_setSelfIllumination(mat%, r#, g#, b#):"_o_material_setSelfIllumination@16"
o_material_setPointSize(mat%, ps#):"_o_material_setPointSize@8"
o_material_setReceiveShadows(mat%, enabled%):"_o_material_setReceiveShadows@8"
o_material_compile(mat%, autoManageTextureUnits%):"_o_material_compile@8"
o_material_setDepthCheckEnabled(mat%, enabled%):"_o_material_setDepthCheckEnabled@8"
o_material_setDepthWriteEnabled(mat%, enabled%):"_o_material_setDepthWriteEnabled@8"
o_material_setColourWriteEnabled(mat%, enabled%):"_o_material_setColourWriteEnabled@8"
o_material_setCullingMode(mat%, mode%):"_o_material_setCullingMode@8"
o_material_setManualCullingMode(mat%, mode%):"_o_material_setManualCullingMode@8"
o_material_setLightingEnabled(mat%, enabled%):"_o_material_setLightingEnabled@8"
o_material_setShadingMode(mat%, mode%):"_o_material_setShadingMode@8"
o_material_setFog(mat%, overrideScene%, mode%, colour%, expDensity#, linearStart#, linearEnd#):"_o_material_setFog@28"
o_material_setDepthBias(mat%, constantBias#, slopeScaleBias#):"_o_material_setDepthBias@12"
o_material_setTextureFiltering(mat%, filterType%):"_o_material_setTextureFiltering@8"
o_material_setTextureAnisotropy(mat%, maxAniso%):"_o_material_setTextureAnisotropy@8"
o_material_setSceneBlending(mat%, sbt%):"_o_material_setSceneBlending@8"
o_material_getName$(mat%):"_o_material_getName@4"
o_material_getTechnique%(mat%, index%):"_o_material_getTechnique@8"
o_material_getTechniqueByName%(mat%, techname$):"_o_material_getTechniqueByName@8"
o_material_isTransparent%(mat%):"_o_material_isTransparent@4"
o_material_getReceiveShadows%(mat%):"_o_material_getReceiveShadows@4"
o_material_setTransparencyCastsShadows(mat%, enabled%):"_o_material_setTransparencyCastsShadows@8"
o_material_getTransparencyCastsShadows%(mat%):"_o_material_getTransparencyCastsShadows@4"
o_material_createTechnique%(mat%):"_o_material_createTechnique@4"
o_material_getNumTechniques%(mat%):"_o_material_getNumTechniques@4"
o_material_removeTechnique(mat%, index%):"_o_material_removeTechnique@8"
o_material_removeAllTechniques(mat%):"_o_material_removeAllTechniques@4"
o_material_getSupportedTechnique%(mat%, index%):"_o_material_getSupportedTechnique@8"
o_material_getNumSupportedTechniques%(mat%):"_o_material_getNumSupportedTechniques@4"
o_material_getUnsupportedTechniquesExplanation$(mat%):"_o_material_getUnsupportedTechniquesExplanation@4"
o_material_getNumLodLevels%(mat%, schemeIndex%):"_o_material_getNumLodLevels@8"
o_material_getBestTechnique%(mat%, lodIndex%, rend%):"_o_material_getBestTechnique@12"

;====================================================================
; Mesh Functions
;====================================================================
o_mesh_getBounds%(m%):"_o_mesh_getBounds@4"

;====================================================================
; AxisAlignedBox Functions
;====================================================================
o_aab_getSize%(aab%):"_o_aab_getSize@4"

;====================================================================
; CompositorManager
;====================================================================
o_addCompositor%(vport%, compositor$, addPosition%):"_o_addCompositor@12"
o_setCompositorEnabled(vp%, compositor$, enabled%):"_o_setCompositorEnabled@12"

;====================================================================
; Technique
;====================================================================
o_technique_getPass%(tech%, index%):"_o_technique_getPass@8"
o_technique_getPassByName%(tech%, techName$):"_o_technique_getPassByName@8"
	
;====================================================================
; Pass
;====================================================================
o_pass_getFragmentProgramParameters%(p%):"_o_pass_getFragmentProgramParameters@4"
o_pass_processPendingPassUpdates(p%):"_o_pass_processPendingPassUpdates@4"
	
;====================================================================
; GpuProgramParameters
;====================================================================
o_gpu_setNamedConstant(pars%, cname$, v#):"_o_gpu_setNamedConstant@12"
	
;====================================================================
; Ray
;====================================================================
o_ray_Create%(origin%, direction%):"_o_ray_Create@8"

;====================================================================
; Framelistener
;====================================================================
o_createFrameListener%():"_o_createFrameListener@0"
o_defineFrameStarted(func%, listener%):"_o_defineFrameStarted@8"
o_defineFrameEnded(func%, listener%):"_o_defineFrameEnded@8"

;====================================================================
; CompositorInstance
;====================================================================
o_createCIListener%():"_o_createCIListener@0"
o_ci_addListener(instance%, listener%):"_o_ci_addListener@8"
	
;====================================================================
; CompositorInstanceListener
;====================================================================
o_createMaterialListener%():"_o_createMaterialListener@0"
o_setMaterialSetupPtr(matListener%, func%):"_o_setMaterialSetupPtr@8"
o_setMaterialRenderPtr(matListener%, func%):"_o_setMaterialRenderPtr@8"



